#pragma once
#include <boost/shared_ptr.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include "Xps/Object/ObjectType.h"

namespace Xps
{
    class IObject abstract
    {
    public:
        typedef boost::shared_ptr<IObject> Ptr;

        virtual ~IObject(void){};
        virtual ObjectType getType() const = 0;
        virtual void serialize(boost::archive::binary_oarchive & ar, const unsigned int version) = 0;
        virtual void serialize(boost::archive::binary_iarchive & ar, const unsigned int version) = 0;
    };
};